let [foo = true] = [];
console.log(foo); // true

// 【ES6 内部使用严格相等运算符（===），判断一个位置是否有值。所以，只有当一个数组成员严格等于undefined，默认值才会生效】
let [x = 1] = [undefined];
let [y = 1] = [null];
console.log(x, y); // 1 null

// 【默认值为一个表达式】
function f() {
  return 1;
}

let [a = f(), b = f()] = [5];
console.log(a, b); // 5 1

// 【默认值，可以引用解构赋值的其他变量，但该变量必须已经声明】
let [c = 1, d = c] = [];
console.log(c, d); // 1 1
